import json
from utils.path_processor import resource_path


class PluginManager:
    """管理插件的加载、保存和配置持久化操作。"""

    def __init__(self):
        """初始化插件管理器并加载初始插件配置。"""
        self._plugins = self._load_plugins()  # 调用私有方法加载插件配置

    def _load_plugins(self):
        """从JSON文件加载插件配置数据。

        Returns:
            list: 成功时返回插件列表，失败时返回空列表。

        Raises:
            FileNotFoundError: 当配置文件不存在时触发。
            JSONDecodeError: 当配置文件内容格式错误时触发。
        """
        try:
            # 尝试打开插件配置文件
            with open(resource_path("data/plugins.json")) as f:
                # 解析JSON格式的插件配置
                return json.load(f)
        except (FileNotFoundError, json.JSONDecodeError) as e:
            # 处理文件不存在或格式错误的情况
            print(f"加载插件失败: {str(e)}")
            # 返回空列表保证程序容错性
            return []

    def save_plugins(self):
        """将当前插件配置持久化存储到 JSON 文件。"""
        # 以写入模式打开配置文件
        with open(resource_path("data/plugins.json"), "w") as f:
            # 将插件列表序列化为 JSON 格式保存
            json.dump(self._plugins, f)
